﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace ViewMaker.Core
{
    /// <summary>
    /// ViewLayoutを生成する
    /// </summary>
    public interface IViewLayoutGenerator
    {
        /// <summary>
        /// 指定したViewModelからViewLayoutを生成する
        /// </summary>
        /// <param name="vm"></param>
        /// <param name="flag"></param>
        /// <returns></returns>
        ViewLayoutItem Generate(object vm, LayoutGenerateFlag flag = LayoutGenerateFlag.All);

        /// <summary>
        /// 指定したプロパティ情報からViewLayoutを生成する
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="propInfo"></param>
        /// <param name="flag"></param>
        /// <returns></returns>
        ViewLayoutItem GenerateChild(ViewLayoutItem parent, PropertyInfo propInfo, LayoutGenerateFlag flag = LayoutGenerateFlag.All);
    }
}
